<!-- 项目展示添加/编辑页面 -->
<template>
  <view class="min-h-screen bg-gray-50 pb-32">
    <!-- 顶部导航 -->
    <PageHeader :title="isEdit ? '编辑项目' : '添加项目'" :showBack="true">
      <!-- <template #right>
        <view 
          class="flex items-center justify-center px-4 py-2 text-blue-600 cursor-pointer"
          @click="handlePreview"
        >
          <text class="text-[28rpx]">预览</text>
        </view>
      </template> -->
    </PageHeader>

    <!-- 表单内容 -->
    <view class="px-6 mt-4 space-y-6 w-full box-border">
      <!-- 项目图片 -->
      <view class="bg-white rounded-2xl p-6 shadow-sm">
        <view class="text-[32rpx] font-bold text-gray-900 mb-4">项目图片</view>
        <view class="text-[24rpx] text-gray-500 mb-4">最多上传9张图片，建议尺寸750x750</view>
        
        <!-- 图片上传区域 -->
        <view class="grid grid-cols-3 gap-4 w-full box-border">
          <!-- 已上传的图片 -->
          <view 
            v-for="(image, index) in formData.images" 
            :key="index"
            class="relative aspect-square bg-gray-100 rounded-[4rpx] overflow-hidden"
          >
            <image 
              :src="image" 
              class="w-full h-full object-cover"
              mode="aspectFill"
            />
            <!-- 删除按钮 -->
            <view 
              class="absolute -top-2 -right-2 w-[40rpx] h-[40rpx] bg-red-500 rounded-[4rpx] flex items-center justify-center cursor-pointer"
              @click="removeImage(index)"
            >
              <IconFont name="close" size="12" class="text-white" />
            </view>
          </view>
          
          <!-- 添加图片按钮 -->
          <view 
            v-if="formData.images.length < 9"
            class="aspect-square bg-gray-50 rounded-xl flex flex-col items-center justify-center border-2 border-dashed border-gray-300 cursor-pointer transition-all hover:border-blue-600 hover:bg-blue-50"
            @click="chooseImages"
          >
            <IconFont name="plus" size="36" class="text-blue-600 mb-2" />
            <text class="text-[22rpx] text-gray-600">添加图片</text>
          </view>
        </view>
      </view>

      <!-- 项目信息 -->
      <view class="bg-white rounded-2xl p-6 shadow-sm">
        <!-- 支付状态提示 -->
        <view v-if="formData.pay_status !== undefined" class="mb-[30rpx] p-[20rpx] rounded-[15rpx] text-[26rpx]"
          :class="needsPayment ? 'bg-blue-50 text-blue-600 border border-blue-200' : 'bg-orange-50 text-orange-600 border border-orange-200'">
          {{ needsPayment ? '未支付状态：可任意修改所有信息，保存时需要支付' : '已支付状态：项目已支付，修改后直接保存' }}
        </view>
        
        <view class="text-[32rpx] font-bold text-gray-900 mb-6">项目信息</view>
        
        <!-- 项目标题 -->
        <view class="mb-6">
          <view class="text-[28rpx] font-medium text-gray-700 mb-3">项目标题</view>
          <input 
            v-model="formData.title"
            type="text" 
            placeholder="请输入项目标题"
            class="w-full p-4 border border-gray-200 rounded-xl text-[28rpx] bg-gray-50 box-border"
            maxlength="50"
          />
          <view class="text-[22rpx] text-gray-400 mt-2 text-right">{{ formData.title.length }}/50</view>
        </view>

        <!-- 项目描述 -->
        <view class="mb-6">
          <view class="text-[28rpx] font-medium text-gray-700 mb-3">项目描述</view>
          <nut-textarea
            v-model="formData.description"
            placeholder="请详细描述项目内容、特点、优势等..."
            class="w-full !p-4 !h-[200rpx] box-border border-solid !border-2 !border-gray-200 !rounded-xl !bg-gray-50"
            maxlength="500"
          />
          <view class="text-[22rpx] text-gray-400 mt-2 text-right">{{ formData.description.length }}/3000</view>
        </view>

        <!-- 联系信息 -->
        <view class="mb-6">
          <view class="text-[28rpx] font-medium text-gray-700 mb-3">联系信息</view>
          <input 
            v-model="formData.contact"
            type="text" 
            placeholder="请输入联系人姓名和电话"
            class="w-full p-4 border border-gray-200 rounded-xl text-[28rpx] bg-gray-50 box-border"
            maxlength="100"
          />
        </view>
      </view>

      <!-- 区域选择 -->
      <view v-if="!canEditRegion" class="mb-4 py-4 bg-gray-50 text-[24rpx] text-gray-600 flex items-center rounded-[10rpx]">
        <!-- <IconFont name="info" class="mr-[8rpx]" /> -->
        <IconFont font-class-name="iconfont" class-prefix="icon" name="xinxiinfo21" size="15" class="mr-[8rpx]" color="#ff9800"/>

        <text class="text-[24rpx] text-[#ff9800]"> 已支付项目：区域选择不可修改</text>
      </view>
      <RegionSelector v-model="regionLevel" @change="handleRegionChange" :disabled="!canEditRegion" />

      <!-- 服务区域选择 -->
      <view class="bg-white rounded-2xl p-6 shadow-sm">
        <view class="text-[32rpx] font-bold text-gray-900 mb-6 flex items-center">
          <IconFont name="location" class="text-blue-500 mr-3" />
          <text>服务区域</text>
        </view>
        
        <view class="mb-4">
          <text class="text-[28rpx] font-medium text-gray-700 block mb-3">选择服务区域</text>
          
          <!-- 已支付状态提示 -->
          <view v-if="!canEditRegion" class="mb-4 p-4 bg-gray-50 text-[24rpx] text-gray-600 rounded-[10rpx]">
            <!-- <IconFont name="info" class="mr-[8rpx]" /> -->
            {{formData.address}}
          </view>
          
          <view class="text-[24rpx] text-gray-500 mb-4">
            <!-- 根据区域选择级别显示不同的说明文字 -->
            <text v-if="regionLevel === 'city'">
              选择项目服务的具体省市，这将影响项目的服务范围和发布费用
            </text>
            <text v-else-if="regionLevel === 'province'">
              选择项目服务的省份，这将影响项目的服务范围和发布费用
            </text>
            <text v-else-if="regionLevel === 'nation'">
              全国范围，无需选择具体区域
            </text>
          </view>
          
          <!-- <view 
            class="w-full p-4 border-2 border-gray-200 rounded-xl text-[28rpx] bg-gray-50 cursor-pointer flex items-center justify-between box-border"
            :class="{ 'border-blue-500 bg-blue-50': region }"
            @click="handleRegionClick"
          >
            <text :class="region ? 'text-gray-900' : 'text-gray-400'">
              {{ regionDisplayText }}
            </text>
            <IconFont name="arrow-right" size="24rpx" class="text-gray-400" />
          </view> -->

          <CityPicker
            v-model:visible="showCityPicker"
            :mode="cityPickerMode"
            :placeholder="cityPickerPlaceholder"
            :title="cityPickerTitle"
            :disabled="!canEditRegion"
            @confirm="handleRegionConfirm"
            @cancel="handleRegionCancel"
          />
        </view>

        <!-- 费用显示 -->
        <view class="bg-blue-50 rounded-xl p-4">
          <view class="flex items-center justify-between">
            <text class="text-[28rpx] font-medium text-blue-900">发布费用</text>
            <text class="text-[32rpx] font-bold text-blue-600">¥{{ fee }}</text>
          </view>
          <view class="text-[24rpx] text-blue-700 mt-2">
            费用说明：{{ getFeeDescription() }}
          </view>
        </view>
      </view>

      <!-- 发布按钮 -->
      <view class="bg-white rounded-2xl p-6 shadow-sm">
        <!-- 价格显示 -->
        <!-- <view class="text-center mb-4">
          <text class="text-[28rpx] text-gray-600">发布费用</text>
          <text class="text-[48rpx] font-bold text-red-500 ml-2">¥{{ totalAmount }}</text>
        </view> -->
        
        <nut-button 
          type="primary" 
          size="large"
          :loading="isSubmitting"
          :disabled="!isFormValid"
          @click="handleSubmit"
          class="w-full"
        >
          {{ isSubmitting ? '保存中...' : (needsPayment ? `支付¥${totalAmount}并保存项目` : '保存项目') }}
        </nut-button>
        
        <view class="text-[22rpx] text-gray-400 text-center mt-4">
          支付后项目将在展示列表中显示，获得更多曝光机会
        </view>
      </view>
    </view>

    <!-- 支付方式选择弹窗 -->
    <PaymentMethodModal 
      v-model="showPaymentModal" 
      :amount="parseFloat(totalAmount)"
      @confirm="handlePaymentConfirm"
      @cancel="handlePaymentCancel"
    />
  </view>
</template>

<script setup lang="ts">
import { ref, computed, onMounted } from 'vue'
import { IconFont } from '@nutui/icons-vue-taro'
import Taro from '@tarojs/taro'
import PageHeader from '@/components/PageHeader.vue'
import RegionSelector from '@/components/RegionSelector.vue'
import CityPicker from '@/components/CityPicker.vue'
import PaymentMethodModal from '@/components/PaymentMethodModal.vue'
import { getFullPath } from '@/utils/request'
import { post } from '@/utils/request'
import { useUserStore } from '@/store/user'

/**
 * 表单数据类型定义
 */
interface FormData {
  title: string
  description: string
  images: string[]
  contact: string
  pay_status?: number // 支付状态：0-未支付，1-已支付
}

/**
 * 区域数据类型定义
 */
interface RegionData {
  code: string
  name: string
  level: number
  parentCode?: string
}

// 响应式数据
const isEdit = ref(false)
const projectId = ref<number | null>(null)
const isSubmitting = ref(false)

// 支付相关
const showPaymentModal = ref(false)
const currentProjectId = ref<number | null>(null)

// 用户store
const userStore = useUserStore()

// 表单数据
const formData = ref<FormData>({
  title: '',
  description: '',
  images: [],
  contact: '',
  pay_status: 0 // 支付状态：0-未支付，1-已支付
})

// 区域选择相关
const regionLevel = ref("city")
const fee = ref<string>("1")
const rangeType = ref<string>("1")
const showCityPicker = ref(false)
const region = ref<{
  province?: RegionData
  city?: RegionData
} | null>(null)

/**
 * 表单验证
 */
const isFormValid = computed(() => {
  return formData.value.title.trim() &&
         formData.value.description.trim() &&
         formData.value.contact.trim() &&
         formData.value.images.length > 0 &&
         region.value
})

/**
 * 计算总价格
 */
const totalAmount = computed(() => {
  // 基础价格 + 区域费用
  const basePrice = 0 // 基础价格10元
  const regionFee = parseFloat(fee.value) || 1
  return (basePrice + regionFee).toFixed(2)
})

/**
 * 是否需要支付
 * @description 根据支付状态判断是否需要支付
 * @returns {boolean} 是否需要支付
 */
const needsPayment = computed(() => {
  return formData.value.pay_status !== 1 // 未支付时需要支付
})

/**
 * 是否可以编辑区域选择
 * @description 根据支付状态判断是否可以编辑区域选择
 * @returns {boolean} 是否可以编辑区域选择
 */
const canEditRegion = computed(() => {
  return formData.value.pay_status !== 1 // 已支付时不可编辑区域
})

/**
 * 区域选项
 * @type {Array<{value: string, label: string, fee: number}>}
 */
const regionOptions: Array<{ value: string; label: string; fee: number, range: string }> = [
  { value: "city", label: "市级", fee: 1, range: "1" },
  { value: "province", label: "省级", fee: 5, range: "2" },
  { value: "nation", label: "全国", fee: 8, range: "3" },
]

/**
 * 根据区域选择级别确定市区选择器的模式
 */
const cityPickerMode = computed(() => {
  switch (regionLevel.value) {
    case 'city':
      return 'city' // 市级：可以选择省市
    case 'province':
      return 'province' // 省级：只能选择省份
    case 'nation':
      return 'province' // 全国：不可选择，但设置为province模式
    default:
      return 'city'
  }
})

/**
 * 根据区域选择级别确定是否禁用市区选择器
 */
const isCityPickerDisabled = computed(() => {
  return regionLevel.value === 'nation' // 全国时禁用
})

/**
 * 选中的区域显示文本
 */
const regionDisplayText = computed(() => {
  if (!region.value) {
    if (regionLevel.value === 'nation') {
      return "全国范围"
    }
    return "请选择服务区域"
  }
  
  if (region.value.city) {
    return `${region.value.province?.name} ${region.value.city.name}`
  }
  
  if (region.value.province) {
    return region.value.province.name
  }
  
  return "请选择服务区域"
})

/**
 * 市区选择器的占位符文本
 */
const cityPickerPlaceholder = computed(() => {
  switch (regionLevel.value) {
    case 'city':
      return "请选择服务区域（省市）"
    case 'province':
      return "请选择服务区域（省份）"
    case 'nation':
      return "全国范围"
    default:
      return "请选择服务区域"
  }
})

/**
 * 市区选择器的标题文本
 */
const cityPickerTitle = computed(() => {
  switch (regionLevel.value) {
    case 'city':
      return "选择服务区域（省市）"
    case 'province':
      return "选择服务区域（省份）"
    case 'nation':
      return "全国范围"
    default:
      return "选择服务区域"
  }
})

/**
 * 获取费用说明
 */
const getFeeDescription = () => {
  switch (regionLevel.value) {
    case 'city':
      return '市级发布，覆盖指定省市区域'
    case 'province':
      return '省级发布，覆盖指定省份区域'
    case 'nation':
      return '全国发布，覆盖全国所有区域'
    default:
      return '请选择发布区域'
  }
}

/**
 * 构建地址参数
 */
const buildAddressParam = () => {
  if (!region.value) return ''
  
  if (region.value.city) {
    return `${region.value.province?.name}-${region.value.city.name}`
  }
  
  if (region.value.province) {
    return region.value.province.name
  }
  
  return ''
}

/**
 * 处理区域选择变化 - 参考 bounty.vue 的逻辑
 */
const handleRegionChange = (data: { value: string; fee: number; range: string }) => {
  const options = regionOptions.find((item) => item.range == data.range);
  if (options) {
    rangeType.value = options.range; // 更新rangeType
    regionLevel.value = options.value;
    fee.value = options.fee.toString();
  }
  
  // 当区域选择改变时，清空之前选择的市区信息
  region.value = null
  
  console.log('区域选择已改变:', data.value, '清空市区选择')
}

/**
 * 处理服务区域点击
 */
const handleRegionClick = () => {
  // 如果已支付，不允许修改区域
  if (!canEditRegion.value) {
    Taro.showToast({
      title: '已支付项目，区域不可修改',
      icon: 'none',
      duration: 1500
    })
    return
  }
  
  if (regionLevel.value === 'nation') {
    // 全国范围时不需要选择具体区域
    Taro.showToast({
      title: '全国范围无需选择具体区域',
      icon: 'none',
      duration: 1500
    })
    return
  }
  
  showCityPicker.value = true
}

/**
 * 处理市区选择确认
 */
const handleRegionConfirm = (result: {
  province?: RegionData
  city?: RegionData
}) => {
  region.value = result
  
  console.log('区域选择确认:', result)
  Taro.showToast({
    title: `已选择: ${result.province?.name || ''} ${result.city?.name || ''}`,
    icon: 'success',
    duration: 1500
  })
}

/**
 * 处理市区选择取消
 */
const handleRegionCancel = () => {
  console.log('取消区域选择')
  Taro.showToast({
    title: '已取消选择',
    icon: 'none',
    duration: 1500
  })
}

/**
 * 选择图片
 */
const chooseImages = () => {
  const maxCount = 9 - formData.value.images.length
  
  if (maxCount <= 0) {
    Taro.showToast({
      title: '最多只能上传9张图片',
      icon: 'none',
      duration: 2000
    })
    return
  }
  
  Taro.chooseImage({
    count: maxCount,
    sizeType: ['original', 'compressed'],
    sourceType: ['album', 'camera'],
    success: async (res) => {
      console.log('选择的图片:', res.tempFilePaths)
      
      for (const filePath of res.tempFilePaths) {
        try {
          Taro.showLoading({ title: '上传中...' })
          
          const uploadRes = await Taro.uploadFile({
            url: getFullPath('/file/upload'),
            filePath: filePath,
            name: 'file',
            header: {
              token: Taro.getStorageSync('token')
            }
          })
          
          Taro.hideLoading()
          
          const data = JSON.parse(uploadRes.data)
          if (data.code === 0) {
            formData.value.images.push(getFullPath(data.data))
            Taro.showToast({
              title: '图片上传成功',
              icon: 'success',
              duration: 1500
            })
          } else {
            Taro.showToast({
              title: data.message || '图片上传失败',
              icon: 'error',
              duration: 2000
            })
          }
        } catch (error) {
          Taro.hideLoading()
          console.error('图片上传失败:', error)
          Taro.showToast({
            title: '图片上传失败',
            icon: 'error',
            duration: 2000
          })
        }
      }
    },
    fail: (error) => {
      console.error('选择图片失败:', error)
      Taro.showToast({
        title: '选择图片失败',
        icon: 'error',
        duration: 2000
      })
    }
  })
}

/**
 * 删除图片
 */
const removeImage = (index: number) => {
  formData.value.images.splice(index, 1)
}

/**
 * 预览项目
 */
const handlePreview = () => {
  if (!isFormValid.value) {
    Taro.showToast({
      title: '请完善项目信息',
      icon: 'none'
    })
    return
  }
  
  // 跳转到预览页面
  Taro.navigateTo({
    url: '/pages/project-show/preview'
  })
}

/**
 * 提交表单
 */
const handleSubmit = async () => {
  if (!isFormValid.value) {
    Taro.showToast({
      title: '请完善项目信息',
      icon: 'none'
    })
    return
  }
  
  if (isSubmitting.value) return
  
  isSubmitting.value = true
  
  try {
    // 构建提交数据 - 根据API接口规范
    const submitData = {
      title: formData.value.title,           // 标题
      pics: formData.value.images.join(','), // 图片列表，用逗号拼接
      content: formData.value.description,   // 内容
      status: 1,                            // 状态，1表示正常
      rangeType: parseInt(rangeType.value),  // 范围类型
      contact: formData.value.contact,     // 联系人
    }
    
    console.log('提交数据:', submitData)
    
    // 根据支付状态显示不同的确认弹窗
    const confirmTitle = needsPayment.value ? '确认发布并支付' : '确认保存'
    const confirmContent = needsPayment.value 
      ? `项目标题：${formData.value.title}\n发布费用：¥${totalAmount.value}`
      : `项目标题：${formData.value.title}\n确认保存修改吗？`
    
    Taro.showModal({
      title: confirmTitle,
      content: confirmContent,
      success: async (res) => {
        if (res.confirm) {
          try {
            // 根据是否为编辑模式调用不同的接口
            const apiUrl = isEdit.value ? "/groupTypes/add" : "/groupTypes/add"
            
            // 如果是编辑模式，添加ID参数
            if (isEdit.value && projectId.value) {
              submitData.id = projectId.value
            }
            
            const apiRes = await post(apiUrl, submitData)
            console.log("项目保存结果:", apiRes)
            
            if (apiRes.code == 0) {
              if (needsPayment.value) {
                // 需要支付，显示支付方式选择弹窗
                currentProjectId.value = isEdit.value ? projectId.value : apiRes.data
                showPaymentModal.value = true
              } else {
                // 不需要支付，直接显示成功提示
                Taro.showToast({
                  title: "保存成功！",
                  icon: "success",
                  duration: 2000
                })
                setTimeout(() => {
                  Taro.navigateBack()
                }, 2000)
              }
            } else {
              Taro.showToast({
                title: apiRes.message || "保存失败",
                icon: "none",
              })
            }
          } catch (error) {
            console.error("项目保存失败:", error)
            Taro.showToast({
              title: "保存失败，请重试",
              icon: "none",
            })
          }
        }
      }
    })
    
  } catch (error) {
    console.error('提交失败:', error)
    Taro.showToast({
      title: '提交失败',
      icon: 'error'
    })
  } finally {
    isSubmitting.value = false
  }
}

/**
 * 处理支付方式确认
 * @param method 支付方式
 */
const handlePaymentConfirm = async (method: 'balance' | 'wechat') => {
  if (!currentProjectId.value) {
    Taro.showToast({
      title: "项目ID不存在",
      icon: "none",
    })
    return
  }

  try {
    // 调用支付接口
    const payRes = await post("/pay/groupTypes", {
      amount: Number(totalAmount.value),
      projectId: currentProjectId.value,
      vipType: 1,
      deductionBalance: method === 'balance' ? 1 : 0, // 余额支付传1，微信支付传0
    })

    console.log("项目展示支付结果 1 --->>>", payRes);

    if (payRes.code == 0) {
      if (method === 'wechat') {
        // 微信支付
        doPay(payRes.data)
      } else {
        // 余额支付
        if (payRes.data.code == 2) {
          // 余额支付成功
          Taro.showToast({
            title: "支付成功！",
            icon: "success",
            duration: 2000,
          })
          // 更新用户余额
          const newBalance = (userStore.userInfo.balance || 0) - parseFloat(totalAmount.value)
          userStore.updateBalance(newBalance)
        } else {
          // 余额支付失败
          Taro.showToast({
            title: payRes.data.msg || "支付失败",
            icon: "error",
            duration: 2000,
          })
          return // 支付失败，不继续执行后续逻辑
        }
      }
      
      Taro.showToast({
        title: `项目发布成功！`,
        icon: "success",
        duration: 2000,
      })
      
      setTimeout(() => {
        Taro.navigateBack()
      }, 2000)
    } else {
      Taro.showToast({
        title: "支付失败",
        icon: "none",
      })
    }
  } catch (error) {
    console.error("支付失败:", error)
    Taro.showToast({
      title: "支付失败，请重试",
      icon: "none",
    })
  } finally {
    isSubmitting.value = false // 重置loading状态
    currentProjectId.value = null // 清空项目ID
  }
}

/**
 * 处理支付取消
 */
const handlePaymentCancel = () => {
  isSubmitting.value = false // 重置loading状态
  currentProjectId.value = null // 清空项目ID
  Taro.showToast({
    title: "已取消支付",
    icon: "none",
  })
}

/**
 * 微信支付
 */
const doPay = (param: any) => {
  (window as any).WeixinJSBridge.invoke(
    "getBrandWCPayRequest",
    {
      // appId: param.appId, //公众号名称，由商户传入
      // timeStamp: param.timeStamp, //时间戳，自1970年以来的秒数
      // nonceStr: param.nonceStr, //随机串
      // package: param.package, //扩展字段
      // signType: param.signType, //微信签名方式
      // paySign: param.paySign, //微信签名

      appId: param.appid,
      timeStamp: param.timeStamp,
      nonceStr: param.nonceStr,
      package: param.prepayId,
      signType: 'RSA',
      paySign: param.paySign,
    },
    function (param: any) {
      console.log("微信支付结果 --->>>", param);
      if (param.err_msg == "get_brand_wcpay_request:ok") {
        // 使用以上方式判断前端返回,微信团队郑重提示：
        //res.err_msg将在用户支付成功后返回ok，但并不保证它绝对可靠，商户需进一步调用后端查单确认支付结果。
        Taro.showToast({
          title: "支付成功！",
          icon: "success",
          duration: 2000,
        })
        setTimeout(() => {
          Taro.navigateBack()
        }, 2000)
      } else {
        Taro.showToast({ title: "支付失败！", icon: "error", duration: 2000 })
      }
    }
  )
}

/**
 * 获取图片列表
 * @param pics 图片字符串，用逗号分隔
 */
const getImageList = (pics: string) => {
  if (!pics) return []
  const images = pics.split(',').filter(pic => pic.trim())
  return images
}

/**
 * 加载项目数据（编辑模式）
 */
const loadProjectData = async () => {
  if (!isEdit.value || !projectId.value) return
  
  try {
    // 从API获取项目详情数据
    const res = await post('/groupTypes/getById', { id: projectId.value })
    
    if (res.code === 0 && res.data && res.data.columns) {
      const data = res.data.columns
      // 将详情数据映射到表单数据
      formData.value = {
        title: data.title || '',
        description: data.content || '',
        images: getImageList(data.pics || ''),
        contact: data.contact || '',
        pay_status: data.pay_status || 0,
        address: data.address || ''
      }
      
      // 设置区域相关数据 - 参考 bounty.vue 的逻辑
      if (data.range_type) {
        rangeType.value = data.range_type || "1";
        // 根据 range_type 找到对应的区域选项
        const regionOption = regionOptions.find(item => item.range === (data.range_type || "1"));
        if (regionOption) {
          regionLevel.value = regionOption.value;
          fee.value = regionOption.fee.toString();
        }
      } else {
        // 如果没有区域数据，设置默认值
        rangeType.value = "1"; // 默认市级
        const defaultRegion = regionOptions.find(item => item.range === "1");
        if (defaultRegion) {
          regionLevel.value = defaultRegion.value;
          fee.value = defaultRegion.fee.toString();
        }
      }
      
      // 解析服务区域
      if (data.address) {
        const parts = data.address.split('-')
        if (parts.length === 2) {
          // 市级：省-市
          region.value = {
            province: { code: '110000', name: parts[0], level: 1 },
            city: { code: '110100', name: parts[1], level: 2, parentCode: '110000' }
          }
        } else if (parts.length === 1) {
          // 省级或全国：只有省名
          region.value = {
            province: { code: '110000', name: parts[0], level: 1 }
          }
        }
      }
    } else {
      // 如果API调用失败，显示提示
      Taro.showToast({
        title: res.message || '获取项目数据失败',
        icon: 'none',
        duration: 2000
      })
      
      // 延迟返回上一页
      setTimeout(() => {
        Taro.navigateBack()
      }, 2000)
    }
    
  } catch (error) {
    console.error('加载项目数据失败:', error)
    Taro.showToast({
      title: '加载失败',
      icon: 'error'
    })
  }
}

// 页面初始化
onMounted(() => {
  // 获取页面参数 - H5环境下使用getCurrentInstance
  const instance = Taro.getCurrentInstance()
  const router = instance?.router
  
  console.log("router params:", router?.params)
  
  if (router?.params?.id) {
    isEdit.value = true
    projectId.value = parseInt(router.params.id)
    loadProjectData()
  }
})
</script>

<style lang="scss">
.nut-textarea {
  padding: 0 !important;
}
</style>
